//////////////////////////////////////////////////////////////////////
//
//	Copyright 2010-2011 Rogo's Team. All Rights Reserved
//
//////////////////////////////////////////////////////////////////////
package com.rogo.weibo.platform.netease
{
	import com.rogo.weibo.platform.netease.api.account.DoAccount;
	import com.rogo.weibo.platform.netease.api.block.DoBlock;
	import com.rogo.weibo.platform.netease.api.directmessage.DoDirectMessage;
	import com.rogo.weibo.platform.netease.api.favorite.DoFavorite;
	import com.rogo.weibo.platform.netease.api.friendship.DoFriendship;
	import com.rogo.weibo.platform.netease.api.hot.DoHot;
	import com.rogo.weibo.platform.netease.api.location.DoLocation;
	import com.rogo.weibo.platform.netease.api.oauth.DoOauth;
	import com.rogo.weibo.platform.netease.api.search.DoSearch;
	import com.rogo.weibo.platform.netease.api.status.DoStatus;
	import com.rogo.weibo.platform.netease.api.timeline.DoTimeline;
	import com.rogo.weibo.platform.netease.api.topic.DoTopic;
	import com.rogo.weibo.platform.netease.api.users.DoUsers;

	/**
	 * 网易微博
	 * 
	 * <pre>
	 * var weibo:WeiboNetease = new WeiboNetease(dataHandler, errorHandler);
	 * // 每个方法对应一个CMD 在回调函数中使用这个CMD来区分
	 * weibo.getRequestToken(*, *);
	 * 
	 * protected function dataHandler(cmd:String, param:Object):void
	 * {
	 * 	switch (cmd)
	 * 	{
	 * 		case DoOauth.CMD_REQUEST_TOKEN:
	 * 		// getRequestToken() 的回调
	 * 		break;
	 * 	}
	 * }
	 * 
	 * protected function errorHandler(cmd:String, param:Object):void
	 * {
	 * 
	 * }
	 * 
	 * </pre>
	 * 
	 * @see http://rogo.sinaapp.com
	 * @see http://open.t.163.com
	 * 
	 * @author rogo
	 */	
	public class WeiboNetease
	{
		public function WeiboNetease(dataHandler:Function, errorHandler:Function)
		{
			doTimeline = new DoTimeline(dataHandler, errorHandler);
			doStatus = new DoStatus(dataHandler, errorHandler);
			doUsers = new DoUsers(dataHandler, errorHandler);
			doFriendship = new DoFriendship(dataHandler, errorHandler);
			doHot = new DoHot(dataHandler, errorHandler);
			doTopic = new DoTopic(dataHandler, errorHandler);
			doDM = new DoDirectMessage(dataHandler, errorHandler);
			doAccount = new DoAccount(dataHandler, errorHandler);
			doFav = new DoFavorite(dataHandler, errorHandler);
			doBlock = new DoBlock(dataHandler, errorHandler);
			doLocation = new DoLocation(dataHandler, errorHandler);
			doSearch = new DoSearch(dataHandler, errorHandler);
			doOauth = new DoOauth(dataHandler, errorHandler);
		}
		
		//--------------------------------------------------------------------------
		//
		//  Variables
		//
		//--------------------------------------------------------------------------
		
		private var doTimeline:DoTimeline; 		// 1
		private var doStatus:DoStatus;     		// 2
		private var doUsers:DoUsers; 	   		// 3
		private var doFriendship:DoFriendship;	// 4
		private var doHot:DoHot; 				// 5
		private var doTopic:DoTopic;			// 6
		private var doDM:DoDirectMessage;		// 7
		private var doAccount:DoAccount;   		// 8
		private var doFav:DoFavorite;			// 9
		private var doBlock:DoBlock;			// 10
		private var doLocation:DoLocation;		// 11
		private var doSearch:DoSearch;			// 12
		private var doOauth:DoOauth;      		// 13
		
		//--------------------------------------------------------------------------
		//
		//  API 1.1.1 微博列表 Methods
		//
		//--------------------------------------------------------------------------
		
		/**
		 * 获取当前登录用户关注用户的最新微博列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoTimeline.CMD_HOME_TIMELINE</b>
		 * 
		 * @param count 数量，默认为30条，最大为200条
		 * @param since_id 该参数需传cursor_id,返回此条索引之前发的微博列表,不包含此条
		 * @param max_id 该参数需传cursor_id,返回此条索引之后发的微博列表,包含此条
		 * @param trim_user 值为true时返回的user对象只包含id属性，该属性能在一定程度上减少返回的数据量
		 */	
		public function getHomeTimeline(count:String = null, 
										since_id:String = null, 
										max_id:String = null, 
										trim_user:Boolean = false):void
		{
			doTimeline.getHomeTimeline(count, since_id, max_id, trim_user);
		}
		
		/**
		 * 获取最新的公共微博列表(随便看看)
		 * <br/>
		 * <br/>
		 * <b>CMD : DoTimeline.CMD_PUBLIC_TIMELINE</b>
		 * 
		 * @param trim_user 值为true时返回的user对象只包含id属性
		 */	
		public function getPublicTimeline(trim_user:Boolean = false):void
		{
			doTimeline.getPublicTimeline(trim_user);
		}
		
		/**
		 * 获取评论当前登录用户的微博列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoTimeline.CMD_MENTIONS</b>
		 * 
		 * @param count 数量，默认为30条，最大为200条
		 * @param since_id 该参数需传cursor_id,返回此条索引之前发的微博列表,不包含此条
		 * @param max_id 该参数需传cursor_id,返回此条索引之后发的微博列表，包含此条
		 * @param trim_user 值为true时返回的user对象只包含id属性，该属性能在一定程度上减少返回的数据量
		 */	
		public function getMentions(count:String = null, 
									since_id:String = null,
									max_id:String = null, 
									trim_user:Boolean = false):void
		{
			doTimeline.getMentions(count, since_id, max_id, trim_user);
		}
		
		/**
		 * 获取当前登录用户关注用户的最新微博列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoTimeline.CMD_USER_TIMELINE</b>
		 * 
		 * @param user_id 可选参数 主要是用来区分用户ID跟微博昵称相同产生歧义的情况
		 * @param screen_name 可选参数 可以传user_id或screen_name
		 * @param name 可选参数 用户昵称
		 * @param count 可选参数 数量，默认为30条，最大为200条
		 * @param since_id 可选参数 该参数需传cursor_id,返回此条索引之前发的微博列表,不包含此条
		 * @param max_id 可选参数 该参数需传cursor_id,返回此条索引之后发的微博列表,包含此条
		 * @param trim_user 可选参数 值为true时返回的user对象只包含id属性，该属性能在一定程度上减少返回的数据量
		 */		
		public function getUserTimeline(user_id:String = null,
										screen_name:String = null, 
										name:String = null, 
										count:String = null, 
										since_id:String = null, 
										max_id:String = null, 
										trim_user:Boolean = false):void
		{
			doTimeline.getUserTimeline(user_id, screen_name, name, count, since_id, max_id, trim_user);
		}
		
		/**
		 * 获取当前登录用户所发微博被转发的列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoTimeline.CMD_RETWEET_OF_ME</b>
		 * 
		 * @param count 可选参数，数量，默认为30条，最大为200条
		 * @param since_id 可选参数，该参数需传cursor_id,返回此条索引之前发的微博列表,不包含此条
		 */	
		public function getRetweentsOfMe(count:String = null, since_id:String = null):void
		{
			doTimeline.getRetweetsOfMe(count, since_id);
		}
		
		/**
		 * 获取我发出的评论列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoTimeline.CMD_GET_COMMENTS_BY_ME</b>
		 * 
		 * @param count 可选参数，数量，默认为30条，最大为200条
		 * @param since_id 可选参数，该参数需传cursor_id,返回此条索引之前发的微博列表,不包含此条
		 * @param max_id 可选参数，该参数需传cursor_id,返回此条索引之后发的微博列表，包含此条
		 * @param trim_user 可选参数，值为true时返回的user对象只包含id属性，该属性能在一定程度上减少返回的数据量。默认为true
		 */		
		public function getCommentsByMe(count:String = null,
										since_id:String = null,
										max_id:String = null, 
										trim_user:Boolean = false):void
		{
			doTimeline.getCommentsByMe(count, since_id, max_id, trim_user);
		}
		
		/**
		 * 获取我收到的评论列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoTimeline.CMD_GET_COMMENTS_TO_ME</b>
		 * 
		 * @param count 可选参数，数量，默认为30条，最大为200条
		 * @param since_id 可选参数，该参数需传cursor_id,返回此条索引之前发的微博列表,不包含此条
		 * @param max_id 可选参数，该参数需传cursor_id,返回此条索引之后发的微博列表，包含此条
		 * @param trim_user 可选参数，值为true时返回的user对象只包含id属性，该属性能在一定程度上减少返回的数据量。默认为true
		 */			
		public function getCommentsToMe(count:String = null,
										since_id:String = null,
										max_id:String = null, 
										trim_user:Boolean = false):void
		{
			doTimeline.getCommentsToMe(count, since_id, max_id, trim_user);
		}
		
		//--------------------------------------------------------------------------
		//
		//  API 1.1.2 微博 Methods
		//
		//--------------------------------------------------------------------------
		
		/**
		 * 发布一条新微博
		 * <br/>
		 * <br/>
		 * <b>CMD : DoStatus.CMD_STATUS_UPDATE</b>
		 * 
		 * @param status 必选参数，微博内容，不得超过163个字符
		 * @param lat 可选参数，即纬度。范围在+90.0 到 -90.0，如果超出这个范围则忽略该值，必须与long参数一起使用，
		 * 			  否则忽略该值。只有当用户的geo_enable为true时才有效
		 * @param long 可选参数,即经度。范围在+180.0到-180.0，如果超出这个范围则忽略该值，必须与lat参数一起使用，
		 *             否则忽略该值。只有当用户的geo_enable为true时才有效
		 * @param vid 可选参数,即 POI 的 ID，某一个具体的地点，比如天安门
		 */	
		public function postStatus(status:String, lat:String = null, long:String = null, vid:String = null):void
		{
			doStatus.postStatus(status, lat, long, vid);
		}
		
		/**
		 * 评论一条微博
		 * <br/>
		 * <br/>
		 * <b>CMD : DoStatus.CMD_STATUS_REPLY</b>
		 * 
		 * @param id 必选参数，值为被评论微博的ID。如果回复某条评论，则此值为该评论的id
		 * @param status 必选参数，评论内容
		 * @param is_retweet 可选参数，是否转发 默认不转发 1为转发
		 * @param is_comment_to_root 是否评论给原微博 默认不评论 1为评论
		 */	
		public function replyStatus(id:String, 
									status:String,
									is_retweet:String = null, 
									is_comment_to_root:String = null):void
		{
			doStatus.replyStatus(id, status, is_retweet, is_comment_to_root);
		}
		
		/**
		 * 转发一条微博
		 * <br/>
		 * <br/>
		 * <b>CMD : DoStatus.CMD_STATUS_RETWEET</b>
		 * 
		 * @param id 必选参数，值为被转发微博的ID
		 * @param status 可选参数，评论内容，默认为“转发微博
		 * @param is_retweet 可选参数，是否评论 默认不评论 1为评论
		 * @param is_comment_to_root 可选参数，是否评论给原微博 默认不评论 1为评论
		 */		
		public function retweetStatus(id:String, 
									  status:String = null, 
									  is_retweet:String = null, 
									  is_comment_to_root:String = null):void
		{
			doStatus.retweetStatus(id, status, is_retweet, is_comment_to_root);
		}
		
		/**
		 * 获取指定微博信息
		 * <br/>
		 * <br/>
		 * <b>CMD : DoStatus.CMD_STATUS_SHOW</b>
		 * 
		 * @param id 必选参数，值为被转发微博的ID
		 */		
		public function showStatus(id:String):void
		{
			doStatus.showStatus(id);
		}
		
		/**
		 * 删除指定的微博
		 * <br/>
		 * <br/>
		 * <b>CMD : DoStatus.CMD_STATUS_DESTROY</b>
		 * 
		 * @param id 必选参数，值为删除或撤销转发微博的ID
		 */		
		public function destroyStatus(id:String):void
		{
			doStatus.destroyStatus(id);
		}
		
		/**
		 * 获取指定微博的评论列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoStatus.CMD_STATUS_COMMENTS</b>
		 * 
		 * @param id 必选参数，指定的微博id
		 * @param count 可选参数，数量，默认为30条，最大为200条
		 * @param since_id 可选参数，该参数需传微博id，返回此条索引之前发的微博列表，不包含此条
		 * @param max_id 可选参数，该参数需传微博id，返回此条微博之后发的微博列表，包含此条
		 * @param trim_user 可选参数，值为true时返回的user对象只包含id属性，该参数能在一定程度上减少返回的数据量
		 */				
		public function getStatusComments(id:String, 
										  count:String = null,
										  since_id:String = null, 
										  max_id:String = null, 
										  trim_user:Boolean = false):void
		{
			doStatus.getStatusComments(id, count, since_id, max_id, trim_user);
		}
		
		/**
		 * 获取指定微博的转发列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoStatus.CMD_GET_STATUS_RETWEETS</b>
		 * 
		 * @param id 必选参数，指定的微博id
		 * @param count 可选参数，数量，默认为30条，最大为200条
		 * @param since_id 可选参数，该参数需传微博id，返回此条索引之前发的微博列表，不包含此条
		 * @param max_id 可选参数，该参数需传微博id，返回此条微博之后发的微博列表，包含此条
		 * @param trim_user 可选参数，值为true时返回的user对象只包含id属性，该参数能在一定程度上减少返回的数据量
		 */	
		public function getStatusRetweets(id:String, 
										  count:String = null,
										  since_id:String = null, 
										  max_id:String = null, 
										  trim_user:Boolean = false):void
		{
			doStatus.getStatusRetweets(id, count, since_id, max_id, trim_user);
		}
		
		/**
		 * 获取一条微博被转发的用户信息
		 * <br/>
		 * <br/>
		 * <b>CMD : DoStatus.CMD_GET_RETWEETS_USER</b>
		 * 
		 * @param id 必选参数，值为被转发微博的ID
		 * @param count 可选参数，返回的用户数量，默认为100条，最大100条
		 */		
		public function getRetweetsUser(id:String, count:String = null):void
		{
			doStatus.getRetweetsUser(id, count);
		}
		
		//--------------------------------------------------------------------------
		//
		//  API 1.1.3 用户 Methods
		//
		//--------------------------------------------------------------------------
		
		/**
		 * 获取指定用户的信息
		 * <br/>
		 * user_id、name、screen_name三个参数如果都不传，则返回当前用户信息
		 * <br/>
		 * <br/>
		 * <b>CMD : DoUsers.CMD_USERS_SHOW</b>
		 * 
		 * @param name
		 * @param user_id
		 * @param screen_name
		 */		
		public function getUserInfo(name:String = null, 
									user_id:String = null, 
									screen_name:String = null):void
		{
			doUsers.getUserInfo(name, user_id, screen_name);
		}
		
		/**
		 * 返回用户可能感兴趣的用户，随机返回指定数目的用户
		 * <br/>
		 * <br/>
		 * <b>CMD : DoUsers.CMD_USERS_SUGGESTIONS</b>
		 * 
		 * @param count 可选参数，指定随机返回的用户数目。默认为30个，最多返回30个
		 * @param trim_user 可选参数，值为true时返回最基本的用户数据，使用此参数可以减少返回数据量，默认为false
		 */
		public function getSuggestions(count:String = null, trim_user:Boolean = false):void
		{
			doUsers.getSuggestions(count, trim_user);
		}
		
		/**
		 * 获取推荐的I达人的用户列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoUsers.CMD_USERS_SUGGESTIONS_I</b>
		 * 
		 * @param cursor 可选参数，分页参数
		 * @param trim_user 可选参数，值为true时返回最基本的用户数据，使用此参数可以减少返回数据量，默认为false
		 */	
		public function getSuggestionsI(cursor:String = null, 
										trim_user:Boolean = false):void
		{
			doUsers.getSuggestionsI(cursor, trim_user);
		}
		
		//--------------------------------------------------------------------------
		//
		//  API 1.1.4 关系 Methods
		//
		//--------------------------------------------------------------------------
		
		/**
		 * 关注指定用户
		 * <br/>
		 * <br/>
		 * <b>CMD : DoFriendship.CMD_FRIENDSHIP_CREATE</b>
		 * 
		 * @param user_id 可选参数. 用户ID，主要是用来区分用户ID跟微博昵称相同产生歧义的情况
		 * @param screen_name 可选参数，该用户的个性网址，也可以传user_id
		 */		
		public function createFriendship(user_id:String = null, screen_name:String = null):void
		{
			doFriendship.createFriendship(user_id, screen_name);
		}
		
		/**
		 * 取消关注指定用户
		 * <br/>
		 * <br/>
		 * <b>CMD : DoFriendship.CMD_FRIENDSHIP_DESTROY</b>
		 * 
		 * @param user_id 可选参数. 用户ID，主要是用来区分用户ID跟微博昵称相同产生歧义的情况
		 * @param screen_name 可选参数，该用户的个性网址，也可以传user_id
		 */		
		public function destroyFriendship(user_id:String = null, screen_name:String = null):void
		{
			doFriendship.destroyFriendship(user_id, screen_name);
		}
		
		/**
		 * 获取两个用户的相互关注关系
		 * <br/>
		 * <br/>
		 * <b>CMD : DoFriendship.CMD_FRIENDSHIP_SHOW</b>
		 * 
		 * @param source_id 可选参数，指定用户的userId
		 * @param source_screen_name 可选参数，指定用户的个性网址
		 * @param target_id 可选参数，指定用户的userId
		 * @param target_screen_name 可选参数，目标用户的个性网址
		 */		
		public function getFriendship(source_id:String = null, 
									  source_screen_name:String = null, 
									  target_id:String = null, 
									  target_screen_name:String = null):void
		{
			doFriendship.getFriendship(source_id, source_screen_name, target_id, target_screen_name);
		}
		
		/**
		 * 获取指定用户的关注列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoFriendship.CMD_GET_FRIENDS</b>
		 * 
		 * @param user_id 可选参数. 用户ID，主要是用来区分用户ID跟微博昵称相同产生歧义的情况
		 * @param screen_name 可选参数，该用户的个性网址，也可以传user_id
		 * @param cursor 可选参数，分页参数，单页只能包含30个关注列表
		 */		
		public function getFriends(user_id:String = null, screen_name:String = null, cursor:String = null):void
		{
			doFriendship.getFriends(user_id, screen_name, cursor);
		}
		
		/**
		 * 获取指定用户的被关注列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoFriendship.CMD_GET_FOLLOWERS</b>
		 * 
		 * @param user_id 可选参数. 用户ID，主要是用来区分用户ID跟微博昵称相同产生歧义的情况
		 * @param screen_name 可选参数，该用户的个性网址，也可以传user_id
		 * @param cursor 可选参数，分页参数，单页只能包含30个关注列表
		 */		
		public function getFollowers(user_id:String = null, screen_name:String = null, cursor:String = null):void
		{
			doFriendship.getFollowers(user_id, screen_name, cursor);
		}
		
		/**
		 * 获取当前用户的关注人名字列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoFriendship.CMD_GET_FRIENDS_NAME</b>
		 */		
		public function getFriendsName():void
		{
			doFriendship.getFriendsName();
		}
		
		/**
		 * 获取指定用户的被关注的人名字列表，可用于发私信查找用户
		 * <br/>
		 * <br/>
		 * <b>CMD : DoFriendship.CMD_GET_FOLLOWERS_NAME</b>
		 * 
		 * @param user_id 可选参数. 指定用户ID，主要是用来区分用户ID跟微博昵称相同产生歧义的情况
		 * @param screen_name 可选参数，指定该用户的个性网址，也可以传user_id
		 * @param cursor 可选参数，分页参数，返回cursor之后的结果，包括cursor，可与count参数配合使用
		 * @param count 可选参数，数量，默认为30
		 * @param matchkey 可选参数，按照拼音或汉字模糊匹配的key，默认为空串（不做过滤）
		 * @param show_img 可选参数，为true显示头像的图片，默认不显示
		 */		
		public function getFollowersName(user_id:String = null, 
										 screen_name:String = null, 
										 cursor:String = null, 
										 count:String = null, 
										 matchkey:String = null, 
										 show_img:String = null):void
		{
			doFriendship.getFollowersName(user_id, screen_name, cursor, count, matchkey, show_img);
		}
		
		//--------------------------------------------------------------------------
		//
		//  API 1.1.5 热榜 Methods
		//
		//--------------------------------------------------------------------------
		
		/**
		 * 获取当前的热门转发榜
		 * <br/>
		 * <br/>
		 * <b>CMD : DoHot.CMD_HOT</b>
		 * 
		 * @param type 必选参数，排行榜类型,当前有4种:oneHour,sixHours,oneDay,oneWeek
		 * @param size 可选参数，返回数量,不传则为默认值(当前为50),最多50
		 */		
		public function getHot(type:String, size:String = null):void
		{
			doHot.getHot(type, size);
		}
		
		//--------------------------------------------------------------------------
		//
		//  API 1.1.6 话题 Methods
		//
		//--------------------------------------------------------------------------
		
		/**
		 * 推荐话题API，其效果与“我的首页”右侧的推荐话题一致 
		 * <br/>
		 * <br/>
		 * <b>CMD : DoTopic.CMD_TOPIC</b>
		 */		
		public function getTopic():void
		{
			doTopic.getTopic();
		}
		
		//--------------------------------------------------------------------------
		//
		//  API 1.1.7 私信 Methods
		//
		//--------------------------------------------------------------------------
		
		/**
		 * 获取当前用户私信列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoDirectMessage.CMD_DIRECTMESSAGE</b>
		 * 
		 * @param since_id 可选参数，上一页最后一条私信的id
		 * @param count 可选参数，获取私信的数量
		 */		
		public function getDirectMessage(since_id:String = null, count:String = null):void
		{
			doDM.getDirectMessage(since_id, count);
		}
		
		/**
		 * 获取当前用户发送的私信列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoDirectMessage.CMD_DIRECTMESSAGE_SEND</b>
		 * 
		 * @param since_id 可选参数，上一页最后一条私信的id
		 * @param count 可选参数，获取私信的数量
		 */	
		public function getDirectMessageSend(since_id:String = null, count:String = null):void
		{
			doDM.getDirectMessageSend(since_id, count);
		}
		
		/**
		 * 发送一条私信
		 * <br/>
		 * <br/>
		 * <b>CMD : DoDirectMessage.CMD_NEW_DIRECTMESSAGE</b>
		 * 
		 * @param user 必选参数，收信用户的昵称，即name
		 * @param text 必选参数，私信内容
		 */		
		public function newDirectMessage(user:String, text:String):void
		{
			doDM.newDirectMessage(user, text);
		}
		
		/**
		 * 删除一条私信
		 * <br/>
		 * <br/>
		 * <b>CMD : DoDirectMessage.CMD_DESTROY_DIRECTMESSAGE</b>
		 * 
		 * @param id 必选参数，删除的私信id
		 */		
		public function destroyDirectMessage(id:String):void
		{
			doDM.destroyDirectMessage(id);
		}
		
		/**
		 * 会话分组方式获取当前用户私信
		 * <br/>
		 * <br/>
		 * <b>CMD : DoDirectMessage.CMD_GROUP_DIRECTMESSAGE</b>
		 * 
		 * @param since_id 可选参数，上一页最后一条会话的id
		 * @param count 可选参数，获取私信的数量
		 */		
		public function getGroupDirectMessage(since_id:String = null, count:String = null):void
		{
			doDM.getGroupDirectMessage(since_id, count);
		}
		
		/**
		 * 査看会话分组下的所有私信
		 * <br/>
		 * <br/>
		 * <b>CMD : DoDirectMessage.CMD_SESSION_DIRECTMESSAGE</b>
		 * 
		 * @param user_id （可选） 注：会话列表中的会话id就是 user_id
		 * @param screen_name 用户的screen_name，个性网址（可选）
		 * @param name 昵称（可选）
		 * @param since_id 上一页的最后一条私信id
		 * @param count 可选参数，获取私信的数量
		 */		
		public function getSessionDirectMessage(user_id:String = null, 
												screen_name:String = null, 
												name:String = null, 
												since_id:String = null, 
												count:String = null):void
		{
			doDM.getSessionDirectMessage(user_id, screen_name, name, since_id, count);
		}
		
		/**
		 * 删除一组私信会话
		 * <br/>
		 * <br/>
		 * <b>CMD : DoDirectMessage.CMD_DESTROY_SESSION_DIRECTMESSAGE</b>
		 * 
		 * @param id 必选参数，删除的私信会话id (相关用户的user id)
		 */		
		public function destroySessionDirectMessage(id:String):void
		{
			doDM.destroySessionDirectMessage(id);
		}
		
		//--------------------------------------------------------------------------
		//
		//  API 1.1.8 帐号 Methods
		//
		//--------------------------------------------------------------------------
		
		/**
		 * 网易通行证开通微博，当用户有通行证账号且未开通微博时，可以通过此API开通
		 * <br/>
		 * <br/>
		 * <b>CMD : DoAccount.CMD_ACTIVATE</b>
		 * 
		 * @param nick_name 可选参数，昵称，如果昵称不合法，则返回400
		 * @param real_name 可选参数，真实姓名，如真实姓名不合法，则返回400
		 * @param mobile 可选参数，手机号，如手机号不合法，则返回400
		 * @param id_num 可选参数，身份证号，如身份证号不合法，则返回400
		 */	
		public function activate(nick_name:String = null, 
								 real_name:String = null,
								 mobile:String = null, 
								 id_num:String = null):void
		{
			doAccount.activate(nick_name, real_name, mobile, id_num);
		}
		
		/**
		 * 修改用户个人资料
		 * <br/>
		 * <br/>
		 * <b>CMD : DoAccount.CMD_UPDATE_PROFILE</b>
		 * 
		 * @param nick_name 可选参数，昵称，如果昵称不合法，则返回400
		 * @param real_name 可选参数，真实姓名，如真实姓名不合法，则返回400
		 * @param description 可选参数，用户描述，如超过163个字符，则返回400
		 * @param province 可选参数，用户省份，如省份不合法，则返回400
		 * @param city 可选参数，用户城市，如城市不合法，则返回400
		 */	
		public function updateProfile(nick_name:String = null, 
									  real_name:String = null,
									  description:String = null,
									  province:String = null, 
									  city:String = null):void
		{
			doAccount.updateProfile(nick_name, real_name, description, province, city);
		}
		
		/**
		 * 判断当前用户是否验证成功并返回该用户信息
		 * <br/>
		 * <br/>
		 * <b>CMD : DoAccount.CMD_VERIFY_CREDENTIALS</b>
		 */	
		public function verifyCredentials():void
		{
			doAccount.verifyCredentials();
		}
		
		/**
		 * 返回当前登录用户未读的新消息数量
		 * <br/>
		 * <br/>
		 * <b>CMD : DoAccount.CMD_MESSAGE_LATEST</b>
		 */		
		public function getUnreadCount():void
		{
			doAccount.getUnreadCount();
		}
		
		/**
		 * 返回当前小时内剩余访问次数
		 * <br/>
		 * <br/>
		 * <b>CMD : DoAccount.CMD_RATE_LIMIT_STATUS</b>
		 */			
		public function getRateLimitStatus():void
		{
			doAccount.getRateLimitStatus();
		}
		
		//--------------------------------------------------------------------------
		//
		//  API 1.1.9 收藏 Methods
		//
		//--------------------------------------------------------------------------
		
		/**
		 * 获取指定用户的收藏列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoFavorite.CMD_FAVORITES</b>
		 * 
		 * @param id 必选参数，可以为该用户的个性网址(screen_name)
		 * @param count	返回微博数量，默认30，最大200
		 * @param since_id 分页参数，传cursor_id,返回此条微博以前发的微博列表,不包含此条
		 */		
		public function getFavorites(id:String, count:String = null, since_id:String = null):void
		{
			doFav.getFavorites(id, count, since_id);
		}
		
		/**
		 * 添加收藏
		 * <br/>
		 * <br/>
		 * <b>CMD : DoFavorite.CMD_ADD_FAVORITES</b>
		 * 
		 * @param id 必选参数，要收藏的微博ID
		 */		
		public function addFavorite(id:String):void
		{
			doFav.addFavorite(id);
		}
		
		/**
		 * 删除收藏
		 * <br/>
		 * <br/>
		 * <b>CMD : DoFavorite.CMD_DESTROY_FAVORITES</b>
		 * 
		 * @param id 必选参数，要收藏的微博ID
		 */		
		public function destroyFavorite(id:String):void
		{
			doFav.destroyFavorite(id);
		}
		
		//--------------------------------------------------------------------------
		//
		//  API 1.1.10 黑名单 Methods
		//
		//--------------------------------------------------------------------------
		
		/**
		 * 阻止指定用户
		 * <br/>
		 * <br/>
		 * <b>CMD : DoBlock.CMD_CREATE_BLOCK</b>
		 * 
		 * @param user_id  可选参数. 用户ID，主要是用来区分用户ID跟微博昵称相同产生歧义的情况
		 * @param screen_name 可选参数，该用户的个性网址，也可以传user_id
		 */		
		public function createBlock(user_id:String = null, screen_name:String = null):void
		{
			doBlock.createBlock(user_id, screen_name);
		}
		
		/**
		 * 取消已阻止的用户
		 * <br/>
		 * <br/>
		 * <b>CMD : DoBlock.CMD_DESTROY_BLOCK</b>
		 * 
		 * @param user_id  可选参数. 用户ID，主要是用来区分用户ID跟微博昵称相同产生歧义的情况
		 * @param screen_name 可选参数，该用户的个性网址，也可以传user_id
		 */		
		public function destroyBlock(user_id:String = null, screen_name:String = null):void
		{
			doBlock.destroyBlock(user_id, screen_name);
		}
		
		/**
		 * 判断指定用户是否已被阻止
		 *  <br/>
		 * <br/>
		 * <b>CMD : DoBlock.CMD_EXIST_BLOCK</b>
		 * 
		 * @param user_id 可选参数. 用户ID，主要是用来区分用户ID跟微博昵称相同产生歧义的情况
		 * @param screen_name 可选参数，该用户的个性网址，也可以传user_id
		 */		
		public function existBlock(user_id:String = null, screen_name:String = null):void
		{
			doBlock.existBlock(user_id, screen_name);
		}
		
		/**
		 * 查看已阻止的用户列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoBlock.CMD_GET_BLOCK</b>
		 */		
		public function getBlock():void
		{
			doBlock.getBlock();
		}
		
		/**
		 * 查看已阻止的用户列表id数组
		 * <br/>
		 * <br/>
		 * <b>CMD : DoBlock.CMD_GET_BLOCK_IDS</b>
		 */		
		public function getBlockIds():void
		{
			doBlock.getBlockIds();
		}
		
		//--------------------------------------------------------------------------
		//
		//  API 1.1.11 地理位置相关 Methods
		//
		//--------------------------------------------------------------------------
		
		/**
		 * 上报地址位置
		 * <br/>
		 * <br/>
		 * <b>CMD : DoLocation.CMD_REPORT_LOCATION</b>
		 * 
		 * @param lat 必选参数，即纬度。范围在+90.0 到 -90.0，如果超出这个范围则返回400
		 * @param long 必选参数,即经度。范围在+180.0到-180.0，如果超出这个范围则返回400
		 */		
		public function reportLocation(lat:String, long:String):void
		{
			doLocation.reportLocation(lat, long);
		}
		
		/**
		 * 获取地点列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoLocation.CMD_VENUES</b>
		 * 
		 * @param lat 可选参数，即纬度。范围在+90.0 到 -90.0，如果超出这个范围则忽略该值，必须与long参数一起使用，否则忽略该值
		 * @param long 可选参数,即经度。范围在+180.0到-180.0，如果超出这个范围则忽略该值，必须与lat参数一起使用，否则忽略该值
		 * @param count 可选参数，返回数据的个数，默认为10，最大为50
		 * @param q 可选参数，搜索关键字，必须与经纬度（lat,long）参数同时使用才有效，,根据定位的数据在用户所在的城市搜索相应的POI，
		 * 			如没有经纬度参数或无结果返回404
		 */		
		public function getVenues(lat:String = null, 
								  long:String = null, 
								  count:String = null,
								  q:String = null):void
		{
			doLocation.getVenues(lat, long, count, q);
		}
		
		/**
		 * 获取与地理位置相关的微博列表
		 * <br/>
		 * <br/>
		 * <b>CMD : DoLocation.CMD_LOCATION_TIMELINE</b>
		 * 
		 * @param lat 可选参数，即纬度。范围在+90.0 到 -90.0，如果超出这个范围则忽略该值，必须与long参数一起使用，否则忽略该值
		 * @param long 可选参数,即经度。范围在+180.0到-180.0，如果超出这个范围则忽略该值，必须与lat参数一起使用，否则忽略该值
		 * @param vid 可选参数,即POI的id，单独使用时值返回包含此vid的微博。如果经纬度也同时传入，则将两种微博（包含vid或经纬度的）
		 * 			   一起返回，按照发微博的时间倒序排列。如果根据vid找不到相应的poi且无定位参数时则返回404
		 * @param count 可选参数，返回微博的个数，默认为30，最大为200
		 * @param since_id 可选参数，该参数需传cursor_id,返回此条索引之前发的微博列表,不包含此条
		 * @param max_id 可选参数，该参数需传cursor_id,返回此条索引之后发的微博列表，包含此条
		 */		
		public function getLocationTimeline(lat:String = null, 
											long:String = null, 
											vid:String = null, 
											count:String = null,
											since_id:String = null, 
											max_id:String = null):void
		{
			doLocation.getLocationTimeline(lat, long, vid, count, since_id, max_id);
		}
		
		/**
		 * 获取临近用户
		 * <br/>
		 * <br/>
		 * <b>CMD : DoLocation.CMD_GET_NEIGHBORS</b>
		 * 
		 * @param lat 必选参数，即纬度。范围在+90.0 到 -90.0，如果超出这个范围则返回400
		 * @param long 必选参数,即经度。范围在+180.0到-180.0，如果超出这个范围则返回400
		 */		
		public function getNeighbors(lat:String, long:String):void
		{
			doLocation.getNeighbors(lat, long);
		}
		
		//--------------------------------------------------------------------------
		//
		//  API 1.1.12 搜索 Methods
		//
		//--------------------------------------------------------------------------
		
		/**
		 * 搜索
		 * <br/>
		 * <br/>
		 * <b>CMD : DoSearch.CMD_SEARCH</b>
		 * 
		 * @param q 必选参数，关键字,最大长度25,如果以#起始的关键字会作为tag搜索精确匹配
		 * @param page 可选参数，当前页数，默认为第一页
		 * @param per_page 可选参数，返回数量,最大20
		 */		
		public function search(q:String, page:String = null, per_page:String = null):void
		{
			doSearch.search(q, page, per_page);
		}
		
		/**
		 * 搜索微博
		 * <br/>
		 * <br/>
		 * <b>CMD : DoSearch.CMD_SEARCH_STATUS</b>
		 * 
		 * @param q 必选参数，关键字,最大长度25,如果以#起始的关键字会作为tag搜索精确匹配
		 * @param page 可选参数，当前页数，默认为第一页
		 * @param per_page 可选参数，返回数量,最大20
		 * @param trim_user 可选参数，值为true时返回的user对象只包含id属性，该属性能在一定程度上减少返回的数据量
		 */		
		public function searchStatus(q:String, 
									 page:String = null, 
									 per_page:String = null, 
									 trim_user:Boolean = false):void
		{
			doSearch.searchStatus(q, page, per_page, trim_user);
		}
		
		/**
		 * 搜索用户
		 * <br/>
		 * <br/>
		 * <b>CMD : DoSearch.CMD_SEARCH_USER</b>
		 * 
		 * @param q 必选参数，关键字,最大长度25,如果以#起始的关键字会作为tag搜索精确匹配
		 * @param page 可选参数，当前页数，默认为第一页
		 * @param per_page 可选参数，返回数量,最大20
		 */		
		public function searchUser(q:String, page:String = null, per_page:String = null):void
		{
			doSearch.searchUser(q, page, per_page);
		}
		
		//--------------------------------------------------------------------------
		//
		//  API 1.1.13 Oauth Methods
		//
		//--------------------------------------------------------------------------
		
		/**
		 * STEP 1 获取RequestToken
		 * <br/>
		 * <br/>
		 * <b>CMD : DoOauth.CMD_REQUEST_TOKEN</b>
		 * @param appKey 申请应用得到的appKey
		 * @param appSecret	申请应用得到的appSecret
		 */		
		public function getRequestToken(appKey:String, appSecret:String, callBack:String = null):void
		{
			doOauth.getRequestToken(appKey, appSecret, callBack);
		}
		
		/**
		 * STEP 2 授权RequestToken
		 * <br/>
		 * <br/>
		 * <b>CMD : DoOauth.CMD_AUTH_TOKEN</b>
		 */		
		public function authRequestToken():void
		{
			doOauth.authRequestToken();
		}
		
		/**
		 * STEP 3 使用授权码得到访问令牌
		 * <br/>
		 * <br/>
		 * <b>CMD : DoOauth.CMD_ACCESS_TOKEN</b>
		 * @param verify 授权码
		 */		
		public function getAccessToken(verify:String):void
		{
			doOauth.getAccessToken(verify);
		}
		
		//--------------------------------------------------------------------------
		//
		//  Event Handlers
		//
		//--------------------------------------------------------------------------
		
	}
}